package com.xiaodeng.xdblogspringboot.mapper;

import com.xiaodeng.xdblogspringboot.pojo.Article;
import com.xiaodeng.xdblogspringboot.pojo.User;
import org.apache.ibatis.annotations.*;

import java.util.Date;
import java.util.List;

@Mapper
public interface UserMapper {
    //用户注册
    @Insert("insert into user(username,password,email,create_time,update_time) values (#{username},#{password},#{email},now(),now())")
    void add(@Param("username")String username, @Param("password")String password,@Param("email") String email);
    //用户名查询用户
    @Select("select * from user where username = #{username}")
    User findByUserName(String username);
    //删除用户
    @Delete("delete from user where id = #{id}")
    void delete(Integer id);
    //更新用户信息
    @Update("update user set nickname=#{nickname},email=#{email},update_time=now() where id=#{id}")
    void update(User user);
    //更新用户密码
    @Update("update user set password=#{md5String},update_time=now() where id =#{id}")
    void updatePwd(@Param("md5String") String md5String,@Param("id") Integer id);
    //更新用户头像
    @Update("update user set user_pic=#{avatarUrl},update_time=now() where id =#{id}")
    void updateAvatar(@Param("avatarUrl")String avatarUrl,@Param("id") Integer id);
    @Select("select * from article a where a.create_user = #{userId}")
    List<Article> getArticle(Integer userId);
    @Select("select id from user where username = #{username}")
    Integer findUserName(String username);

    /**
     * 根据用户ID查询用户信息
     */
    @Select("SELECT id, nickname, user_pic FROM user WHERE id = #{userId}")
    User selectById(@Param("userId") Long userId);

    /**
     * 查询当月新注册用户数量
     * @return 当月新注册用户数量
     */
    @Select("SELECT COUNT(*) FROM user WHERE YEAR(create_time) = YEAR(#{currentDate}) AND MONTH(create_time) = MONTH(#{currentDate})")
    int countNewUsersThisMonth(Date currentDate);
}
